import axios from 'axios'
import store from '@/store'

import { customHistory } from './history'
import { Toast } from 'antd-mobile'

const request = axios.create({
  baseURL: 'http://toutiao.itheima.net/v1_0',
  // baseURL: process.env.REACT_APP_URL
})

// 请求拦截器
request.interceptors.request.use((config) => {
  // 获取token
  const {
    login: { token },
  } = store.getState()

  // 除了登录请求外，其他请求统一添加 token
  if (token) {
    // ts中！操作符叫非空断言=》去掉null undefined 告诉ts类型是安全的
    config.headers!.Authorization = `Bearer ${token}`
  }

  return config
})

// 简化返回数据
request.interceptors.response.use(
  (res) => {
    return res.data
  },
  async (error) => {
    if (error.response.status === 401) {
      // 401直接跳回登录页=》重新登陆
      Toast.show({
        content: error.response.data?.message || '出错了',
        icon: 'fail',
        afterClose: () => {
          // 删除token
          //  store.dispatch(logout())
          // 跳转到登录页，并携带当前要访问的页面，这样，登录后可以继续返回该页面
          // customHistory.push('/login', {
          //   from: customHistory.location.pathname
          // })
          customHistory.replace({
            pathname: '/login',
            state: { from: customHistory.location.pathname },
          })
        },
      })
    }
    return Promise.reject(error)
  }
)

export default request
